package org.example.TOOL;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;

import java.io.File;
import java.util.Objects;

public class DirectoryTreeToJson {

    public static void main(String[] args) {
        // 指定根目录
        File rootDir = new File("C:\\Users\\13899\\Desktop\\DataProcessing\\HebeiProfessionalDevelopment\\VueShow\\src");
        if (!rootDir.exists() || !rootDir.isDirectory()) {
            System.out.println("指定的目录不存在或不是一个有效的目录！");
            return;
        }

        // 生成树形结构的JSON
        ObjectMapper objectMapper = new ObjectMapper();
        ObjectNode jsonTree = generateDirectoryTree(rootDir, objectMapper);

        // 打印JSON字符串
        try {
            String jsonString = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(jsonTree);
            System.out.println(jsonString);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static ObjectNode generateDirectoryTree(File dir, ObjectMapper objectMapper) {
        ObjectNode node = objectMapper.createObjectNode();

        // 遍历目录中的所有文件和子目录
        File[] files = dir.listFiles();
        if (files != null) {
            for (File file : files) {
                if (file.isDirectory()) {
                    // 如果是目录，递归生成子树
                    node.set(file.getName(), generateDirectoryTree(file, objectMapper));
                } else {
                    // 如果是文件，添加值为 "这个是文件" 的字段
                    node.put(file.getName(), "这个是文件");
                }
            }
        }

        return node;
    }
}